<?php
##-----------------------------------------------------------------------------____________________BRING_NEW_RES_NUM
function BRING_NEW_RES_NUM(){
	
	db();
	
	if(!$sql=mysql_query(" select * from epay where 1   order by res_num desc   limit 1 "))
		{ERROR("Error in mysql query1");return false;}
	
	if(mysql_num_rows($sql)==0)return "10000001";
	else return mysql_result($sql,0,'res_num')+1;

}


##-----------------------------------------------------------------------------____________________CREATE_FORM_AND_SEND_DATA_TO_SB24
function CREATE_FORM_AND_SEND_DATA_TO_SB24(){
	
	if(!$_POST['Amount']){ERROR("Check fields");return false;}
	
	db();
	
	$ResNum=BRING_NEW_RES_NUM();
	
	if(!$sql=mysql_query(" insert into epay 
		(res_num,batch_number,memo,pay_from,pay_value,pay_date) values 
		('$ResNum','BATCH:FOR:$ResNum','".$_POST['memo']."','".$_POST['pay_from']."','".$_POST['Amount']."','') "))
		{ERROR("Error in mysql query2");return false;}
	
	echo '	
	﻿<form name="checkout_confirmation" action="https://acquirer.sb24.com/CardServices/controller" method="post">
	<input type="hidden" name="MID" value="'.$GLOBALS["MID"].'">
	<input type="hidden" name="RedirectURL" value="'.$GLOBALS["RedirectURL"].'">
	
	<input type="hidden" name="TableBorderColor" value="488DCC">
	<input type="hidden" name="TableBGColor" value="488DCC">
	<input type="hidden" name="PageBGColor" value="B6CBEA">
	<input type="hidden" name="PageBorderColor" value="6C788B">
	<input type="hidden" name="TitleFont" value="Tahoma">
	<input type="hidden" name="TitleColor" value="000000">
	<input type="hidden" name="TitleSize" value="5">
	<input type="hidden" name="TextFont" value="Tahoma">
	<input type="hidden" name="TextColor" value="000000">
	<input type="hidden" name="TextSize" value="2">
	<input type="hidden" name="TypeTextFont" value="Tahoma">
	<input type="hidden" name="TypeTextColor" value="000000">
	<input type="hidden" name="TypeTextSize" value="2">
	<input type="hidden" name="LogoURL" value="'.$GLOBALS["LogoURL"].'">
	
	<input type="hidden" name="Amount" value="'.$_POST["Amount"].'">
	<input type="hidden" name="ResNum" value="'.$ResNum.'">

	<script> checkout_confirmation.submit(); </script>
	';

	
}


##-----------------------------------------------------------------------------____________________VERIFY_PROCCES
function VERIFY_PROCCES($RefNum,$MID,$state){
	
	
	
	if($RefNum=='')
		{ERROR("مشکلي در تراکنش توسط خريدار بوجود آمده است");return false;}
	
	if($state!='OK')
		return CHECK_STATE_ERROR();


	
	if((!$RefNum)or(!$MID)){ERROR("Check fields");return false;}
	
#	include('/usr/share/pear/nusoap.php');
	require_once('nusoap/nusoap.php');
	
	
	
	$soapclient = new nusoap_client('https://Acquirer.sb24.com/ref-payment/ws/ReferencePayment?WSDL','wsdl');
#	$soapclient->debug_flag=true;
	$soapProxy = $soapclient->getProxy();
#	if($err=$soapclient->getError())
#		echo $err ;
#	echo $soapclient->debug_str;
	$res=  $soapProxy->VerifyTransaction($RefNum,$MID);//reference number and sellerid
	
	if($res<=0){echo "<br><br><b>VerifyTransaction = $res</b><br>"; return false;}
	
	
	return $res;
}


##-----------------------------------------------------------------------------____________________SAVE_POSTS_IN_DB_AS_NEW_TRANSACTION
function SAVE_POSTS_IN_DB_AS_NEW_TRANSACTION($VERIFY_RESULT){
	
	db();
	
	$batch_number=$_POST['RefNum'];
	$ResNum=$_POST['ResNum'];
	
	if(!$sql=mysql_query(" select * from epay where batch_number='$batch_number' limit 1 "))
		{ERROR("Error in security");die();}
	
	if(mysql_num_rows($sql)!=0){
		echo "
		<br><br><br><br><br><br><br>
		<center>
		<table width=400 height=40 cellpadding=2 cellspacing=1 bgcolor='#936b1a'><tr><td bgcolor='#ffe8db' style='font-family:tahoma; font-size:12px; color:#8b643b; ' align=center >
		<br>
		رسيد ديجيتالي مورد نظر قبلاً در پايگاه داده ثبت شده (double request)<br>
		<br>
		<a href='http://smslearning.ir/plugins/shop/index.php'>صفحه اصلي</a>
		<br><br>
		</td></tr></table>
		</center>
		";	
		return false;
	}
	
	if(!$sql3=mysql_query(" select * from epay where 1 and res_num='$ResNum' "))
		{ERROR("Error in mysql query");return false;}
	if(mysql_num_rows($sql3)!=1){ERROR("Invalid Transaction, ER:fe191");return false;}
	
	if(!$pRec=mysql_fetch_array($sql3))
		{ERROR("Error in mysql query");return false;}
		
	if($pRec['pay_value']!=$VERIFY_RESULT)
		{ERROR("مبلغ پرداختي با مبلغ ثبت شده در بانک مطابقت ندارد");return false;}
	
	if(!$sql2=mysql_query(" update epay set batch_number='$batch_number',pay_date='".date("U")."' where 1 and res_num='$ResNum' limit 1  "))
		{ERROR("Error in security");die();}
	
	return true;
}

##-----------------------------------------------------------------------------____________________CONGRATULATE_SUCCESS_TRANSACTION
function CONGRATULATE_SUCCESS_TRANSACTION($ResNum){
	
	db();



	if(!$sql=mysql_query(" select * from epay where 1 and res_num='$ResNum' limit 1 "))
		{ERROR("Error in mysql query");return false;}
	
	if(mysql_num_rows($sql)!=1)
		{ERROR("Error in security");die();}
	
	if(!$pRec=mysql_fetch_array($sql))
		{ERROR("Error in mysql query");return false;}
	

	echo "
	<br><br><br><br><br><br><br>
	<center>
	<table dir=rtl width=400 height=40 cellpadding=2 cellspacing=1 bgcolor='#7c931a'><tr><td bgcolor='#f6fff0' style='font-family:tahoma; font-size:12px; color:#738b3b; ' align=center >
	<br>
	مبلغ <b>".$pRec['pay_value']."</b> ريال با موفقيت دريافت شد <br>
	<br>
	<span style='color:red; font-size:14px;' >رسيد ديجيتالي :</span> <b dir=ltr >".$pRec['batch_number']."</b> <br>
	<br>
	<a href='http://smslearning.ir/plugins/shop/index.php'>صفحه اصلي</a>
	<br><br>
	</td></tr></table>
	</center>
	";	
	

	
	return true;
}


##-----------------------------------------------------------------------------____________________CHECK_STATE_ERROR
function CHECK_STATE_ERROR(){
	
	switch($_POST['State']){
		
		case 'Canceled By User' :
			ERROR("تراکنش توسط خريدار کنسل شده است.");
			break;
		case 'Invalid Amount' :
			ERROR("مبلغ سند برگشتی، از مبلغ تراکنش اصلی بيشتر است.");
			break;
		case 'Invalid Transaction' :
			ERROR("درخواست برگشت يک تراکنش رسيده است، در حالی که تراکنش اصلی پيدا نمی شود.");
			break;
		case 'Invalid Card Number' :
			ERROR("شماره کارت اشتباه است.");
			break;
		case 'No Such Issuer' :
			ERROR("چنين صادر کننده کارتی وجود ندارد.");
			break;
		case 'Expired Card Pick Up' :
			ERROR("از تاريخ انقضای کارت گذشته است و کارت ديگر معتبر نيست.");
			break;
		case 'Allowable PIN Tries Exceeded Pick Up' :
			ERROR("رمز کارت (PIN) 3 مرتبه اشتباه وارد شده است در نتيجه کارت غير فعال خواهد شد.");
			break;
		case 'Incorrect PIN' :
			ERROR("خريدار رمز کارت (PIN) را اشتباه وارد کرده است.");
			break;
		case 'Exceeds Withdrawal Amount Limit' :
			ERROR("مبلغ بيش از سقف برداشت می باشد.");
			break;
		case 'Transaction Cannot Be Completed' :
			ERROR("تراکنش Authorize شده است ( شماره PIN و PAN درست هستند) ولی امکان سند خوردن وجود ندارد.");
			break;
		case 'Response Received Too Late' :
			ERROR("تراکنش در شبکه بانکی Timeout خورده است.");
			break;
		case 'Suspected Fraud Pick Up' :
			ERROR("خريدار يا فيلد CVV2 و يا فيلد ExpDate را اشتباه زده است. ( يا اصلا وارد نکرده است)");
			break;
		case 'No Sufficient Funds' :
			ERROR("موجودی به اندازی کافی در حساب وجود ندارد.");
			break;
		case 'Issuer Down Slm' :
			ERROR("سيستم کارت بانک صادر کننده در وضعيت عملياتی نيست.");
			break;
		case 'TME Error' :
			ERROR("خطا ايجاد شده قابل شناسايى نيست. لطفا با مديريت سايت تماس بگيريد");
			break;
	}	
	
	die();
	return false;
}

##-----------------------------------------------------------------------------____________________DELETE_NUN_BATCH_RECORDS
function DELETE_NUN_BATCH_RECORDS(){
/*	db();
	if(!$sql=mysql_query(" delete from epay where 1 and ( batch_number like 'BATCH:FOR:%' ) "))
		{ERROR("Error in remove invalid records");return false;}
*/	return true;
}

##-----------------------------------------------------------------------------____________________REJECT_EPAY
function REJECT_EPAY($batch_number){

	if(!$_POST['sb24password']){
		BRING_SB24PASSWORD($batch_number);
		die();
	}
	db();
	if(!$sql=mysql_query(" select * from epay where 1 and batch_number='".$_POST['batch_number']."' "))
		{ERROR("Error in mysql_query6");return false;}
	if(mysql_num_rows($sql)!=1)
		{ERROR("Invalid security:8");return false;}
	if(!$row=mysql_fetch_array($sql))
		{ERROR("Error in mysql_query7");return false;}
	if($row['pay_value']<=0)
		{ERROR("Invalid value");return false;}
		
		

#	include('/usr/share/pear/nusoap.php');
	require_once('nusoap/nusoap.php');
	$soapclient = new nusoap_client('https://acquirer.sb24.com/ref-payment/ws/ReferencePayment?WSDL','wsdl');
	$soapProxy = $soapclient->getProxy();
	$res=$soapProxy->ReverseTransaction(
		$_POST['batch_number']/*Refrence Number*/
		,$GLOBALS['MID']/*MTID*/
		,$_POST['sb24password']/*Password*/
		,$row['pay_value']/*"Reverse Number"*/
	);//reference number,sellerid,password,reverse amount

	
	return $res;
}

##-----------------------------------------------------------------------------____________________BRING_SB24PASSWORD
function BRING_SB24PASSWORD($batch_number){
?>
<br><br><br><br>
<center>
<table width="400" dir="rtl" height="100" style="font-size:12px; font-family:tahoma; color:#7d9330;" cellpadding="3" cellspacing="1" bgcolor="#9ca43e"><tr><td bgcolor="#f0fff5" align="center">
<br>براي ادامه فرايند بازگشت تراکنش، کلمه عبور حساب بانکي خود را وارد کنيد<br><br>
<form method="post" action="admin.php">
	<input type="hidden" name="ACT" value="<?=GTPT('ACT') ?>">
	<input type="hidden" name="batch_number" value="<?=GTPT('batch_number') ?>">
	<input type="password" name="sb24password" value="" style="font-size:12px; font-family:tahoma; color:#7d9330;">
	<input type="submit" value="تأييد" style="font-size:12px; font-family:tahoma; background-color:#fdfff4; width:100px;">
</form>
</td></tr></table>
</center>
<?
}

##-----------------------------------------------------------------------------____________________BRING_SB24PASSWORD
function CHECK_REJECT_RESULT($res){
	
	switch($res){
		case '1' :
			$prompt="فرايند بازگشت با موفقيت انجام شد";
			break;
		case '-1' :
			$prompt="خطاي داخلي شبکه مالي.";
			break;
		case '-2' :
			$prompt="سپرده‌ها برابر نيستند. ( در حال حاضر اين شرايط به وجود نمی آيد)";
			break;
		case '-3' :
			$prompt="ورودي‌ها حاوي کارکترهاي غيرمجاز مي‌باشند.";
			break;
		case '-4' :
			$prompt="Merchant Authentication Failed ( کلمه عبور يا کد فروشنده اشتباه است)";
			break;
		case '-5' :
			$prompt="Database Exception";
			break;
		case '-6' :
			$prompt="سند قبلا برگشت کامل يافته است.";
			break;
		case '-7' :
			$prompt="رسيد ديجيتالي تهي است.";
			break;
		case '-8' :
			$prompt="طول ورودي‌ها بيشتر از حد مجاز است.";
			break;
		case '-9' :
			$prompt="وجود کارکترهاي غيرمجاز در مبلغ برگشتي.";
			break;
		case '-10' :
			$prompt="رسيد ديجيتالي به صورت Base64 نيست (حاوي کارکترهاي غيرمجاز است).";
			break;
		case '-11' :
			$prompt="طول ورودي‌ها کمتر از حد مجاز است.";
			break;
		case '-12' :
			$prompt="مبلغ برگشتي منفي است.";
			break;
		case '-13' :
			$prompt="مبلغ برگشتي براي برگشت جزئي بيش از مبلغ برگشت نخورده‌ي رسيد ديجيتالي است.";
			break;
		case '-14' :
			$prompt="چنين تراکنشي تعريف نشده است.";
			break;
		case '-15' :
			$prompt="مبلغ برگشتی به صورت اعشاری داده شده است.";
			break;
		case '-16' :
			$prompt="خطای داخلی سيستم";
			break;
		case '-17' :
			$prompt="برگشت زدن جزيي تراکنشی که با کارت بانکی غير از بانک سامان انجام پذيرفته است.";
			break;
		case '-18' :
			$prompt="IP Address  فروشنده نا معتبر است.";
			break;
		DEFAULT :
			$prompt="Invalid error state";
			break;
	}


	if($res==1){
		echo "
		<br><br><br><br>
		<center>
		<table width=400 height=40 cellpadding=2 cellspacing=1 bgcolor='#7c931a'><tr><td bgcolor='#f6fff0' style='font-family:tahoma; font-size:12px; color:#738b3b; ' align=center >
		پاسخ بانک : <b>$prompt</b>
		<br><a href='admin.php'>بازگشت به صفحه اصلي</a>
		</td></tr></table>
		</center>	
		";
		return true;
	}
	else {
		echo "
		<br><br><br><br>
		<center>
		<table width=400 height=40 cellpadding=2 cellspacing=1 bgcolor='#936b1a'><tr><td bgcolor='#ffe8db' style='font-family:tahoma; font-size:12px; color:#8b643b; ' align=center >
		پاسخ بانک : <b>$prompt</b>
		<br><a href='admin.php'>بازگشت به صفحه اصلي</a>
		</td></tr></table>
		</center>
		";	
		return false;
	}
	
	return false;
}

##-----------------------------------------------------------------------------____________________EPAY_DELL
function EPAY_DELL($batch_number){
	
	db();
	
	if(!$sql=mysql_query(" delete from epay where 1 and batch_number='$batch_number' limit 1 "))
		{ERROR("Invalid MySQL Query");return false;}
	
	return true;
}
